home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMIGA PD 1
/
AMIGA-PD-1.iso
/
NetBSD
/
docs-netbsd
/
Mailinglist-Archive
/
1994-08.gz
/
1994-08
/
000135_owner-current-u…s.berkeley.edu_Wed Aug 3 19:09:01 1994.msg
< prev
next >
Wrap
Text File
|
1994-10-16
|
2KB
|
38 lines
To: volker@sfb256.iam.uni-bonn.de
Cc: current-users@sun-lamp.cs.berkeley.edu
Subject: Re: Bounce buffers
<199408031428.QAA22922@sfb256.iam.uni-bonn.de>
X-Face: "Evs"_GpJ]],xS)b$T2#V&{KfP_i2`TlPrY$Iv9+TQ!6+`~+l)#7I)0xr1>4hfd{#0B4
WIn3jU;bql;{2Uq%zw5bF4?%F&&j8@KaT?#vBGk}u07<+6/`.F-3_GA@6Bq5gN9\+s;_d
gD\SW #]iN_U0 KUmOR.P<|um5yP<ea#^"SJK;C*}fMI;Mv(aiO2z~9n.w?@\>kEpSD@*e`
From: Ken Hornstein <kenh@wrl.epi.com>
Sender: owner-current-users@sun-lamp.cs.berkeley.edu
>> > There seems to be code is i386/isa/dma.c to implement bounce buffers for
>> > dma above the 16Mb limit. Is this different than what is required for a
>> > bus-mastering scsi drive?
>>
>> Yes.
>
>... said the idiot, when he meant "no" :-) It's exactly the same problem.
Err, wait ... now you've got _me_ confused :-) Please correct me if I'm wrong,
but ...
The code in dma.c implements bounce buffering when you use the DMA controller
on the motherboard. This works fine for devices that are not bus-mastering
(like the floppy drives). If your buffer is at a higher address than 16Mb,
it copies it to one in lower memory and copies it back after you call
isa_dmadone().
However, since bus-mastering cards to DMA themselves, the way you typically use
them is to program the information on the card and have them perform the DMA
transfer (ie - you don't use the isa_dma* routines, except maybe
isa_dmacascade() ). But the card has no way of knowing if the buffer given it
is greater than 16Mb, and even if it did, it wouldn't know what to do.
It seems to me you could implement this really cheezily by just implementing
bounce buffers in each affected device driver (you could look for the test
statements marked "DMA past end of ISA" and go from there).
--Ken